Strategies have been developed for improving the performance of databases with respect to query (i.e. read only) and transactional (i.e. data update/insertion/deletion) performance in databases.
One strategy is to employ a multi-node cluster of shared-nothing database servers that are each running standard, off-the-shelf, relational database management system software. Software implementing relational database management system (RDBMS) software is available from a number of sources including from Oracle Corporation. International Business Machine Corporation, Microsoft Corporation, and Sybase Inc.
Typically, RDBMS software generates a transaction log of transactions on the database. The transaction log is generally used for database backup and recover operations.
A ‘shared-nothing’ architecture means that each database node in the cluster shares a minimum of resources with other database nodes. In a shared-nothing architecture, the failure of a database node has little or no effect on the other database nodes in the system.
Generally, the cluster of database nodes is coordinated by a separate cluster controller that resides in an architectural tier between the database nodes and the client computers that are accessing the database servers. In this architecture, the cluster controller virtualizes the cluster of standalone database servers such that they appear as a single database server to the client computers. This strategy generally works very well for improving query performance over a single implementation of the database system, but typically offers little benefits for improving transactional performance. The system may be scaled up to handle larger query loads by adding additional database nodes to the cluster. The database nodes may also be separated physically to improve disaster recovery of the system.
A shared-nothing database cluster is typically used with repositories of data that are subject to frequent query activity and occasional transactional activity (insertions, modifications, deletions). As an example, an electronic commerce website may maintain a database that contains data on the available items offered for sale and which responds to inquiries regarding availability and pricing. Typically the data contained in the database would be updated relatively infrequently compared to the rate at which the data is queried by customers.